#include <stdio.h>
#include <unistd.h>

/*
标准输入输出流 （File *）
    FILE *stdin;   标准输入
    FILE *stdout;  标准输出
    FILE *stderr;  标准错误输出
标准输出输出流的文件描述符
    STDIN_FILENO	0  标准输入
    STDOUT_FILENO	1  标准输出
    STDERR_FILENO	2  标准错误输出
*/
int main(int argc, char const *argv[])
{
    // 用stdin来读取控制台输入
    char input_name[10];
    fgets(input_name, 10, stdin);
    printf("使用stdin读取控制台输入: %s", input_name);

    // 用stdout来向控制台输出
    fputs("使用stdout向控制台输出\n", stdout);

    // 用stderr来向控制台输出错误信息
    fputs("使用stderr向控制台输出错误信息\n", stderr);

    // 用STDIN_FILENO来读取控制台输入
    char input_name2[10];
    ssize_t size = read(STDIN_FILENO, input_name2, 10);
    printf("使用STDIN_FILENO读取控制台输入: %.*s \n", (int)size, input_name2);

    // 用STDOUT_FILENO来向控制台输出
    write(STDOUT_FILENO, "STDOUT out\n", 12);

    // 用STDERR_FILENO来向控制台输出错误信息
    write(STDERR_FILENO, "STDERR out\n", 12);

    return 0;
}